<?php

	class Login {

		private $user;
		private $pass;
		private $email;
		private $id;
		private $erros;

		public function  __construct( $user = "", $pass = "", $email = "", $id = "" ) {

			$this->user = $user;
			$this->pass = $pass;
			$this->email = $email;
			$this->id = $id;
			$this->isValid();

		}
		
		public function getErros() {
			return $this->erros;
		}

		public function __get( $key ) {
			return $this->$key;
		}

		public function __set( $key, $val ) {
			$this->$key = $val;
		}

		public function cadastrar() {

			$this->criptografarSenha();
			$banco = DataBase::getBanco();
			$banco->query("INSERT INTO usuario (login_usuario, senha_usuario, email_usuario) VALUES ('" . $this->user . "', '" . $this->pass . "','" . $this->email . "')");

			if ( $banco->error ) 
				$this->tratamentoDeErros( $banco->error );

			return $banco->insert_id;

		}

		public function tratamentoDeErros( $erro ) {
			echo preg_replace("/^Duplicate entry \'(.+?)\' for key \'(.+?)_usuario\'$/", "O $2 <b>$1</b> já está cadastrado no banco de dados!", $erro);
		}

		public function criptografarSenha() {
			$seguranca = new Seguranca( $this->pass, 1 );
			$this->pass = $seguranca->getValor();
		}


	    private function validaEmail() {
	         if( !preg_match("/[a-zA-Z0-9\._-]{2,}@[a-zA-Z0-9\.-_]{2,}\.[a-zA-Z0-9\.]{2,}/", $this->email) )
	         	$this->erros[] = "Este email (<b> " . $this->email .  " </b>) é inválido.";
	    }

	    private function validaUser() {
	    	if ( strlen($this->user) <= 4 )
	    		$this->erros[] = "Usuário (<b> " . $this->user .  " </b>) é inválido.";
	    }

	    private function validaPass() {
	    	if ( strlen($this->user) <= 4 )
	    		$this->erros[] = "Senha (<b> " . $this->pass .  " </b>) é inválida.";
	    }


		public function isValid() {

			$this->validaEmail();
			$this->validaUser();
			$this->validaPass();

			if ( !$this->erros )
				return true;
		}

	}
	


?>